How to visualize data

Visualizing the data we’re working with is indispensible both to check that data pipelines are set up correctly and to check the predictions of a trained model. For visualization, the Makie.jl plotting package is used which requires you to install a plotting backend . Learning tasks define how the data is visualized, allowing you to use the following functions for visualization:

To add support for these to a learning task, you have to implement the plotting interface for a block: showblock! .

Let’s look at an example using the Cat/Dog classifier from the saving and loading tutorial .


			
			
			
			
			import
			
			
			 
			
			CairoMakie
			
			;
			
			 
			
			
			
			CairoMakie
			
			.
			
			
			activate!
			
			(
			
			
			type
			
			=
			
			"
			
			png
			
			"
			
			)
			
			

			
			
			using
			
			
			 
			
	
		
			FastAI
			
			

			
			

			
			
			
			task
			
			,
			
			 
			
			model
			
			 
			
			=
			
			 
			
			
	
		
			loadtaskmodel
			
			(
			
			"
			
			catsdogs.jld2
			
			"
			
			)
			
			

			
			
			dir
			
			 
			
			=
			
			 
			
			
			joinpath
			
			(
			
			
	
		
			datasetpath
			
			(
			
			"
			
			dogscats
			
			"
			
			)
			
			,
			
			 
			
			"
			
			train
			
			"
			
			)
			
			

			
			
			data
			
			 
			
			=
			
			 
			
			
	
		
			loadfolderdata
			
			(
			
			dir
			
			,
			
			 
			
			
			filterfn
			
			=
			
	
		
			isimagefile
			
			,
			
			 
			
			
			loadfn
			
			=
			
			
			(
			
	
		
			loadfile
			
			,
			
			 
			
	
		
			parentname
			
			)
			
			)

			(mapobs(loadfile, ["/home/lorenz/.julia/datadeps/fastai-dogscats/dogscats/train/cats/cat.0.jpg", "…]), mapobs(parentname, ["/home/lorenz/.julia/datadeps/fastai-dogscats/dogscats/train/cats/cat.0.jpg", "…]))

First we load a vector of unprocessed samples, a batch of training data and the corresponding model outputs:


			
			
			
			idxs
			
			 
			
			=
			
			 
			
			
			rand
			
			(
			
			
			1
			
			:
			
			
			nobs
			
			(
			
			data
			
			)
			
			,
			
			 
			
			9
			
			)
			
			

			
			
			samples
			
			 
			
			=
			
			 
			
			
			[
			
			
			
			getobs
			
			(
			
			data
			
			,
			
			 
			
			i
			
			)
			
			 
			
			for
			
			
			 
			
			i
			
			 
			
			in
			
			 
			
			idxs
			
			]
			
			

			
			
			
			xs
			
			,
			
			 
			
			ys
			
			 
			
			=
			
			 
			
			
	
		
			makebatch
			
			(
			
			task
			
			,
			
			 
			
			data
			
			,
			
			 
			
			idxs
			
			)
			
			

			
			
			ŷs
			
			 
			
			=
			
			
			 
			
			
			
	
		
			gpu
			
			(
			
			model
			
			)
			
			(
			
			
	
		
			gpu
			
			(
			
			xs
			
			)
			
			)
			
			 
			
			|>
			
			 
			
	
		
			cpu

			2×9 Matrix{Float32}:
  2.81113  -2.68682    4.27251  -4.39263  …   2.25726  -2.52003  -4.23501
 -1.4409    0.872713  -4.20728   2.1302      -1.23509   1.5162    3.21313

Then we can visualize the data with the functions listed above:


			
			
			
	
		
			showsamples
			
			(
			
			task
			
			,
			
			 
			
			samples
			
			)

			
			
			
	
		
			showbatch
			
			(
			
			task
			
			,
			
			 
			
			xs
			
			,
			
			 
			
			ys
			
			)

			
			
			
	
		
			showpredictions
			
			(
			
			task
			
			,
			
			 
			
			xs
			
			,
			
			 
			
			ŷs
			
			,
			
			 
			
			ys
			
			)